import NotifiUtil from './notification.js'

const downloadAndHandleWgtFile = function(url) {
	uni.downloadFile({
		url: url,
		success: (downloadResult) => {
			console.log("downLoadFile:" + JSON.stringify(downloadResult));
			if (downloadResult.statusCode === 200) {
				plus.runtime.install(downloadResult.tempFilePath, {
					force: false
				}, function() {
					console.log('install success...');
					plus.runtime.restart();
				}, function(e) {
					console.error('install fail...');
				});
			}
		}
	});
}

const downloadAndHandleApkFile = function(url) {
	plus.nativeUI.showWaiting("下载中...");
	var dtask = plus.downloader.createDownload(url, {}, function(d, status) {
		if (status == 200) { // 下载成功 
			var path = d.filename;
			console.log("path:" + d.filename);
			plus.runtime.install(path); // 安装下载的apk文件  
		} else { //下载失败  
			alert("Download failed: " + status);
		}
		plus.nativeUI.closeWaiting();
	});
	dtask.start();
}

//版本升级：实现通知栏显示下载进度
const downloadApkAndShowProgressForUpdate = function(url) {
	// if(!hasNetwork()){
	// 	return;
	// }
	uni.showToast({
		title: '下载中...',
		icon: 'none'
	});

	//Uni.Push：标准基座下可直接运行；自定义基座或正式包，需在manifest.json添加Uni.Push模块并配置
	// plus.push.createMessage( "下载中...", "jack",{cover:true,sound:"none",title:"标题",subtitle:"副标题"});//仅在通知栏显示开始和结束提醒：不会引起操作界面卡顿

	var appname = '';
	var NotificationUtil = NotifiUtil(); //实例创建
	NotificationUtil.setNotification(appname, "开始下载! ");
	//dtask就是plus.createDownload
	// var url = "https://www.uchat.com.cn/app/iot/JackIot.apk";
	var dtask = plus.downloader.createDownload(url); // POST请求提交数据
	console.log(dtask, '------------------')
	dtask.start();
	var arr = [{
		pro: 1,
		isFirst: true
	}, {
		pro: 10,
		isFirst: true
	}, {
		pro: 30,
		isFirst: true
	}, {
		pro: 50,
		isFirst: true
	}, {
		pro: 70,
		isFirst: true
	}, {
		pro: 90,
		isFirst: true
	}]
	dtask.addEventListener("statechanged", async function(task, status) {
		switch (task.state) {
			case undefined: //下载任务未开始
			case 0: //下载任务开始调度
			case 1: //下载任务开始请求
			case 2:
				break; //下载任务请求已经接收
			case 3: // 已接收到数据
				// NotificationUtil.setProgress(Math.round(task.downloadedSize/task.totalSize*100),appname);//通知栏中实时更新进度条会引起操作界面卡顿：一秒执行40多次（监听函数），导致UI操作阻塞
				var pro = parseInt(task.downloadedSize / task.totalSize * 100);
				// if(pro == 1 || pro == 10 || pro == 30 || pro == 50 || pro == 70 || pro == 90){//优化方案一：仅在指定整数进度时更新
				// 	console.log("进度：" + pro);
				// 	NotificationUtil.setProgress(pro,appname);
				// }
				switch (pro) { //优化方案二：仅进度第一次出现（1,10，30，50，70，90）时刷新
					case arr[0].pro:
						if (arr[0].isFirst) {
							console.log("进度：" + pro);
							NotificationUtil.setProgress(pro, appname);
							arr[0].isFirst = false;
						}
						break;
					case arr[1].pro:
						if (arr[1].isFirst) {
							console.log("进度：" + pro);
							NotificationUtil.setProgress(pro, appname);
							arr[1].isFirst = false;
						}
						break;
					case arr[2].pro:
						if (arr[2].isFirst) {
							console.log("进度：" + pro);
							NotificationUtil.setProgress(pro, appname);
							arr[2].isFirst = false;
						}
						break;
					case arr[3].pro:
						if (arr[3].isFirst) {
							console.log("进度：" + pro);
							NotificationUtil.setProgress(pro, appname);
							arr[3].isFirst = false;
						}
						break;
					case arr[4].pro:
						if (arr[4].isFirst) {
							console.log("进度：" + pro);
							NotificationUtil.setProgress(pro, appname);
							arr[4].isFirst = false;
						}
						break;
					case arr[5].pro:
						if (arr[5].isFirst) {
							// console.log("进度：" + pro);
							NotificationUtil.setProgress(pro, appname);
							arr[5].isFirst = false;
						}
						break;
					default:
						break;
				}
				break;
			case 4: // 下载完成
				console.log("Download success: " + task.filename);
				NotificationUtil.compProgressNotification(appname, "下载完成! ");
				// var ins = plus.runtime.install(plus.io.convertLocalFileSystemURL(task.filename), {force: force},()=>{
				// 	uni.showToast({icon:'none',title:'安装成功！'});
				// 	NotificationUtil.clearNotification();
				// },(e)=>{
				// 	uni.showToast({icon:'none',title:'安装失败！'});
				// 	NotificationUtil.clearNotification();
				// })
				plus.runtime.install(task.filename); // 安装下载的apk文件  
				break;
			default: //5: (Number 类型 )下载任务已暂停 -1: (Number 类型 )枚举任务状态
				console.log("Download failed: " + status);
				NotificationUtil.compProgressNotification(appname, "下载失败! ");
				break;
		}
	});
}


export default {
	downloadAndHandleWgtFile,
	downloadAndHandleApkFile,
	downloadApkAndShowProgressForUpdate
}
